package com.sichem.domain.tag.service;

import com.sichem.domain.tag.adapter.repository.ITagRepository;
import com.sichem.domain.tag.model.entity.CrowdTagsJobEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author xiangshizhen
 * @Date 2025/2/13
 */

@Service
@Slf4j
public class TagServiceImpl implements ITagService{

    @Resource
    private ITagRepository repository;

    @Override
    public void execTagBatchJob(String tagId, String batchId) {
        log.info("人群标签批次任务 tagId:{} batchId:{}", tagId, batchId);
        // 查询任务
        CrowdTagsJobEntity crowdTagsJobEntity = repository.queryCrowdTagsJobEntity(tagId, batchId);

        // 根据任务采集用户数据 模拟
        List<String> userIdList = new ArrayList<String>(){{
            add("test005");
            add("test006");
        }};

        // 4. 一般人群标签的处理在公司中，会有专门的数据数仓团队通过脚本方式写入到数据库，就不用这样一个个或者批次来写。
        for (String userId : userIdList) {
            repository.addCrowdTagsUserId(tagId, userId);
        }

        // 更新任务呢标签统计量
        repository.updateCrowdTagsStatistics(tagId, userIdList.size());

    }

    @Override
    public void loadTagsDetailToRedis() {
        repository.loadTagsDetailToRedis();
    }
}
